
package bd;
import classes.*;
import java.sql.*;
import java.util.*;


public class EnderecoBD {

    public static boolean salvar(Endereco endereco,Usuario usuarioLogado)
    {
        try{
            Connection conexao = Conexao.abrir();
            CallableStatement procedure = conexao.prepareCall("{call AT_ENDERECO(NULL,?,?,NULL,?,?)}");
            //procedure.setInt(1, (Integer)null);
            procedure.setString(1,endereco.getDescr());
            procedure.setInt(2,endereco.getCidade().getId());
           // procedure.setInt(4, (Integer)null);
            procedure.setInt(3,usuarioLogado.getId());
            procedure.setString(4,"IN");
            procedure.execute();
            procedure.close();
            conexao.close();
            return true;

        }catch(Exception excecao)
        {
            return false;
        }
    }

    public static boolean alterar(Endereco endereco,Usuario usuarioLogado)
    {
        try{
            Connection conexao = Conexao.abrir();
            CallableStatement procedure = conexao.prepareCall("{call AT_ENDERECO(?,?,?,?,NULL,?)}");
            procedure.setInt(1, endereco.getId());
            procedure.setString(2,endereco.getDescr());
            procedure.setInt(3,endereco.getCidade().getId());
            procedure.setInt(4, usuarioLogado.getId());
            //procedure.setInt(5,(Integer)null);
            procedure.setString(5,"AL");
            procedure.execute();
            procedure.close();
            conexao.close();
            return true;

        }catch(Exception excecao)
        {
            return false;
        }
    }

    public static boolean deletar(int codigo)
    {
        try{
            Connection conexao = Conexao.abrir();
            CallableStatement procedure = conexao.prepareCall("{call AT_ENDERECO(?,NULL,NULL,NULL,NULL,?)}");
            procedure.setInt(1, codigo);
            //procedure.setString(2,null);
            //procedure.setInt(3,(Integer)null);
            //procedure.setInt(4, (Integer)null);
            //procedure.setInt(5,(Integer)null);
            procedure.setString(2,"");
            procedure.execute();
            procedure.close();
            conexao.close();
            return true;
        }catch(Exception excecao)
        {
            return false;
        }
    }

    public static ArrayList<Endereco> pesquisar(String endereco){
        ArrayList<Endereco> vetEnderecos = new ArrayList<Endereco>();
        try{
            Connection conexao = Conexao.abrir();
            Statement comandoSelect = conexao.createStatement();
            ResultSet resultado = comandoSelect.executeQuery("select * from VIEW_SELECIONAENDERECO where end_descr='"+endereco+"'");
            while(resultado.next())
            {
                Endereco novoEndereco = new Endereco();
                novoEndereco.setId(resultado.getInt("end_id"));
                novoEndereco.setDescr(resultado.getString("end_descr"));
                novoEndereco.setCidade(CidadeBD.selecionar(resultado.getInt("cid_id")));
                vetEnderecos.add(novoEndereco);
            }
            conexao.close();
            return vetEnderecos;
        }catch(Exception excecao)
        {
            return null;
        }
    }

    public static Endereco selecionar(int codigo)
    {
        Endereco retorno = null;
        try{
            Connection conexao = Conexao.abrir();
            Statement comandoSelect = conexao.createStatement();
            ResultSet resultado = comandoSelect.executeQuery("select * from VIEW_SELECIONAENDERECO where end_id="+codigo+"");
            if(resultado.next())
            {
                Endereco novoEndereco = new Endereco();
                novoEndereco.setId(codigo);
                novoEndereco.setDescr(resultado.getString("end_descr"));
                novoEndereco.setCidade(CidadeBD.selecionar(resultado.getInt("cid_id")));
                retorno=novoEndereco;
            }
            conexao.close();
            return retorno;
        }catch(Exception excecao)
        {
            return null;
        }
    }

    public static ArrayList<Endereco> selecionar()
    {
        ArrayList<Endereco> vetEnderecos = new ArrayList<Endereco>();
        try{
            Connection conexao = Conexao.abrir();
            Statement comandoSelect = conexao.createStatement();
            ResultSet resultado = comandoSelect.executeQuery("select * from VIEW_SELECIONAENDERECO");
            while(resultado.next())
            {
                Endereco novoEndereco = new Endereco();
                novoEndereco.setId(resultado.getInt("end_id"));
                novoEndereco.setDescr(resultado.getString("end_descr"));
                novoEndereco.setCidade(CidadeBD.selecionar(resultado.getInt("cid_id")));
                vetEnderecos.add(novoEndereco);
            }
            conexao.close();
            return vetEnderecos;
        }catch(Exception excecao)
        {
            return null;
        }
    }

}
